﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

namespace BSC_OTC_Management.Forms.SoTraiChu
{
    public partial class Frm_ChuyenNhuong : Form
    {

        #region Khai bao bien
        private Code.CL_Ultility _cl = new Code.CL_Ultility();
        private string masocn = "";
        private string masoncn = "";
        public int _duyet = (int)Code.StaticVariable.approveCase.ChuaDuyet;
        #endregion

        public Frm_ChuyenNhuong()
        {
            InitializeComponent();
            this.AcceptButton = btt_Cancel;
            rdB_cn.Checked = true;
            this.btt_Trans.Visible = true;
        }

        public Frm_ChuyenNhuong(DataTable _dt, string _function)
        {
            try
            {
                InitializeComponent();
                this.AcceptButton = btt_Cancel;

                //không cho sửa phần thông tin chuyển nhượng
                splitContainer1.Enabled = false;
                //button Trans chuyển thành duyệt
                btt_Trans.Text = "Duyệt";
                btt_Trans.Tag = Code.StaticVariable.function_Approve;
                //lay ve ngay giao dich
                dtp_ngaychungtu.Text = _dt.Rows[0]["ngaytaogd"].ToString();
                //lay ve masocn va masoncn
                masocn = _dt.Rows[0]["masocn"].ToString();
                masoncn = _dt.Rows[0]["masoncn"].ToString();
                //select du lieu tu db
                DataTable tbl_cn = _cl._services.SearchView_BySQL("BSC_TBL_SOTRAICHU", " and a.maso ='" + masocn + "'");
                DataTable tbl_ncn = _cl._services.SearchView_BySQL("BSC_TBL_SOTRAICHU", " and a.maso ='" + masoncn + "'");
                ShowDataCN(tbl_cn);
                ShowDataNCN(tbl_ncn);
                //hien thi so luong gd
                txt_sl.Text = String.Format("{0:#,##0.###}", _dt.Rows[0]["soluong"]);
                //hien thi dien giai
                txt_notes.Text = _dt.Rows[0]["notes"].ToString();
                //fee giao dich
                txt_fee.Text = String.Format("{0:#,##0.###}",_dt.Rows[0]["fee"]);
                //hien thi checkbox
                SetNguoiChiuFee(_dt.Rows[0]["nguoichiufee"].ToString());

                //06-08-2017:DATNT ẩn hiện nút duyệt theo chức năng
                if (_function == Code.StaticVariable.function_View)
                    this.btt_Trans.Visible = false;

            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi hiển thị dữ liệu", Code.StaticVariable.messeseboxLuuY);
            }
        }

        private void ShowDataNCN(DataTable dt)
        {
            if (dt.Columns.Count >= 5 && dt.Rows.Count >= 1)
            {

                txt_ncn_maso.Text = dt.Rows[0]["maso"].ToString(); //makh
                txt_ncn_makh.Text = dt.Rows[0]["makh"].ToString(); //maso
                txt_ncn_hoten.Text = dt.Rows[0]["hoten"].ToString(); //hoten
                txt_ncn_matp.Text = dt.Rows[0]["matp"].ToString(); //matp
                txt_ncn_tentp.Text = dt.Rows[0]["tentp"].ToString(); //maso
                string ncn_sl = dt.Rows[0]["slphothong"].ToString();
                if (ncn_sl.Length != 0)
                {
                    txt_ncn_sl.Text = _cl.NumberFormat(ncn_sl);
                }
                txt_ncn_dotgopvon.Text = dt.Rows[0]["dotgopvon"].ToString(); //dot gop von
            }
        }

        private void ShowDataCN(DataTable dt)
        {
            if (dt.Columns.Count >= 5 && dt.Rows.Count >= 1)
            {
                txt_cn_maso.Text = dt.Rows[0]["maso"].ToString(); //makh
                txt_cn_makh.Text = dt.Rows[0]["makh"].ToString(); //maso
                txt_cn_hoten.Text = dt.Rows[0]["hoten"].ToString(); //hoten
                txt_cn_matp.Text = dt.Rows[0]["matp"].ToString(); //matp
                txt_cn_tentp.Text = dt.Rows[0]["tentp"].ToString(); //maso
                string cn_sl = dt.Rows[0]["slphothong"].ToString();
                if (cn_sl.Length != 0)
                {
                    txt_cn_sl.Text = _cl.NumberFormat(cn_sl); //sl chuyen nhuong
                }
                txt_cn_dotgopvon.Text = dt.Rows[0]["dotgopvon"].ToString(); //dot gop von

            }
        }

        private void btt_Cancel_Click(object sender, EventArgs e)
        {
            this._duyet = (int)Code.StaticVariable.approveCase.ChuaDuyet;
            this.Close();
        }
        
        private void btt_Trans_Click(object sender, EventArgs e)
        {
            try
            {
                if (btt_Trans.Tag == Code.StaticVariable.function_Approve)//duyệt dl
                {
                    this._duyet = (int)Code.StaticVariable.approveCase.DaDuyet;
                    this.Close();
                }
                else//ko phải duyệt
                {
                    //kiểm tra đã nhập mã sổ chưa, mã sổ có trùng nhau ko?
                    if (txt_cn_maso.Text.Length <= 0 || txt_ncn_maso.Text.Length <= 0)
                        throw new Exception(Code.StaticVariable.messeseboxKoDcBoTrong);
                    if (String.Compare(txt_cn_maso.Text, txt_ncn_maso.Text) == 0)
                        throw new Exception(Code.StaticVariable.messeseboxCheckMaso);
                    //Kiểm tra điều kiện mã TP và đợt góp vốn có trùng nhau ko?
                    if (String.Compare(txt_cn_matp.Text, txt_ncn_matp.Text) != 0)
                        throw new Exception(Code.StaticVariable.messeseboxCheckMaTP);
                    if (String.Compare(txt_cn_dotgopvon.Text, txt_ncn_dotgopvon.Text) != 0)
                        throw new Exception(Code.StaticVariable.messeseboxCheckDotPH);

                    //Kiểm tra điều kiện ngày chuyển nhượng
                    string _dt = System.DateTime.Now.ToString("dd/MM/yyyy");
                    DateTime dt = Convert.ToDateTime(_dt);
                    bool _b = false;
                    DataTable table = new DataTable();
                    if (txt_cn_maso.Text.Length != 0)
                    {
                        table = _cl._services.Get_Table_Coupon_By_Matp(txt_cn_maso.Text);

                        for (int i = 0; i < table.Rows.Count; i++)
                        {
                            string _ngaychotds = table.Rows[i]["NGAYCHOTDS"].ToString();
                            string _ngayttlai = table.Rows[i]["NGAYTTLAI"].ToString();
                            DateTime ngaychotds = Convert.ToDateTime(_ngaychotds);
                            DateTime ngayttlai = Convert.ToDateTime(_ngayttlai);

                            if (dt.Year == ngayttlai.Year && dt.Year == ngaychotds.Year)
                            {
                                if (dt >= ngaychotds && dt <= ngayttlai)
                                    throw new Exception(Code.StaticVariable.messeseboxNgayCN);
                            }

                        }

                    }
                    else
                        throw new Exception(Code.StaticVariable.messeseboxKoDcBoTrong);


                    //Thực hiện ghi giao dich chuyển nhượng vao bang tạm
                    if (txt_cn_sl.Text.Length != 0)
                    {
                        //duyệt giao dịch trước khi thực thi
                        // tao bang chua row can insert
                        DataTable tableRow = new DataTable("BSC_TBL_TLLOGALL");

                        // tao cac cot 
                        tableRow.Columns.Add("NGAYTAOGD");
                        tableRow.Columns.Add("MAKH");
                        tableRow.Columns.Add("MASO");
                        tableRow.Columns.Add("TENNGHIEPVU");
                        tableRow.Columns.Add("SOTIEN_SOLUONG");
                        tableRow.Columns.Add("DUYET");
                        tableRow.Columns.Add("NGUOIDUYET");
                        tableRow.Columns.Add("MAGIAODICH");
                        tableRow.Columns.Add("DIENGIAI");
                        tableRow.Columns.Add("NGAYDUYETGD");
                        tableRow.Columns.Add("GIOTAOGD");
                        tableRow.Columns.Add("NGUOITAOGD");

                        // tao 1 row chua du lieu
                        DataRow rowData = tableRow.NewRow();
                        rowData["NGAYTAOGD"] =  DateTime.ParseExact(dtp_ngaychungtu.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");//_cl.Current_DATE("dd/MM/yyyy");
                        rowData["MAKH"] = txt_cn_makh.Text;
                        rowData["MASO"] = txt_cn_maso.Text;
                        rowData["TENNGHIEPVU"] = this.Text;
                        rowData["SOTIEN_SOLUONG"] = Convert.ToDouble(txt_sl.Text);
                        rowData["DUYET"] = "0";
                        rowData["MAGIAODICH"] = "203";
                        rowData["DIENGIAI"] = txt_notes.Text + " sang sổ trái chủ " + txt_ncn_maso.Text;
                        rowData["GIOTAOGD"] = _cl.Current_DATE("HH:mm:ss");
                        rowData["NGUOITAOGD"] = Code.StaticVariable.userID;
                        tableRow.Rows.Add(rowData);

                        // tao 1 row chua kieu du lieu
                        DataRow rowDataType = tableRow.NewRow();
                        rowDataType["NGAYTAOGD"] = "D";
                        rowDataType["MAKH"] = "T";
                        rowDataType["MASO"] = "T";
                        rowDataType["TENNGHIEPVU"] = "T";
                        rowDataType["SOTIEN_SOLUONG"] = "T";
                        rowDataType["DUYET"] = "T";
                        rowDataType["NGUOIDUYET"] = "T";
                        rowDataType["MAGIAODICH"] = "T";
                        rowDataType["DIENGIAI"] = "T";
                        rowDataType["NGAYDUYETGD"] = "D";
                        rowDataType["GIOTAOGD"] = "T";
                        rowDataType["NGUOITAOGD"] = "T";
                        tableRow.Rows.Add(rowDataType);

                        string AUTOID = _cl._services.AddTransData(tableRow);

                        //lưu thông tin vào bảng tạm
                        DataTable temptable = new DataTable("BSC_TBL_CHUYENNHUONG");

                        // tao cac cot 
                        temptable.Columns.Add("ACCOUNT");
                        temptable.Columns.Add("MASOCN");
                        temptable.Columns.Add("MASONCN");
                        temptable.Columns.Add("SOLUONG");
                        temptable.Columns.Add("NOTES");
                        temptable.Columns.Add("FEE");
                        temptable.Columns.Add("NGUOICHIUFEE");
                        temptable.Columns.Add("IDGD");
                        //temptable.Columns.Add("NGAYTAOGD");

                        // tao 1 row chua du lieu
                        DataRow row = temptable.NewRow();
                        row["ACCOUNT"] = Code.StaticVariable.username;
                        row["MASOCN"] = txt_cn_maso.Text;
                        row["MASONCN"] = txt_ncn_maso.Text;
                        row["SOLUONG"] = Convert.ToDouble(txt_sl.Text);
                        row["NOTES"] = txt_notes.Text;
                        row["FEE"] = Convert.ToDouble(txt_fee.Text);
                        row["NGUOICHIUFEE"] = GetNguoiChiuFee();
                        row["IDGD"] = AUTOID;
                       // row["NGAYTAOGD"] = DateTime.ParseExact(dtp_ngaychungtu.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
                        temptable.Rows.Add(row);

                        // tao 1 row chua kieu du lieu
                        DataRow rowType = temptable.NewRow();
                        rowType["ACCOUNT"] = "T";
                        rowType["MASOCN"] = "T";
                        rowType["MASONCN"] = "T";
                        rowType["SOLUONG"] = "T";
                        rowType["NOTES"] = "T";
                        rowType["FEE"] = "T";
                        rowType["NGUOICHIUFEE"] = "T";
                        rowType["IDGD"] = "T";
                        //rowType["NGAYTAOGD"] = "D";
                        temptable.Rows.Add(rowType);

                        string result = _cl._services.AddNewRow("BSC_TBL_CHUYENNHUONG", temptable);
                        if (result == Code.StaticVariable.messeseboxThemmoiThanhCong)
                        {
                            MessageBox.Show(Code.StaticVariable.messeseboxChuaDuyet, Code.StaticVariable.messeseboxLuuY);
                            _cl.ClearAllText(this);
                            this.Close();
                        }
                        else
                            throw new Exception(result);
                    }
                    else
                        throw new Exception(Code.StaticVariable.messeseboxCheckSoLuong);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,Code.StaticVariable.messeseboxLuuY);
            }
     
        }

        //Sự kiện bấm F5 trong tb_cn
        private void txt_kh1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                try
                {
                    //chuyển sang Form View để tìm kiếm Sổ trái chủ
                    Forms.FrmView _FrmView = new Forms.FrmView("BSC_TBL_SOTRAICHU", "Thông tin Sổ trái chủ", true);
                    _FrmView.ShowDialog();

                    //lấy về dữ liệu DataTable formView Sotraichu
                    DataTable dt = Code.StaticVariable._tbl;
                    ShowDataCN(dt);
                    Code.StaticVariable._tbl.Clear();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message,Code.StaticVariable.messeseboxLuuY);
                }
            }
        }

        private void Frm_ChuyenNhuong_Load(object sender, EventArgs e)
        {
            this.lb_title.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(163))); 
            this.lb_title.Text = "Thông tin chuyển nhượng <Nhấn F5 trong ô Mã khách hàng để tìm kiếm thông tin KH>.";
            
        }

        //Sự kiện bấm F5 trong tb_ncn
        private void txt_kh2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                try
                {
                    //chuyển sang Form View để tìm kiếm Sổ trái chủ
                    Forms.FrmView _FrmView = new Forms.FrmView("BSC_TBL_SOTRAICHU", "Thông tin Sổ trái chủ", true);
                    _FrmView.ShowDialog();

                    //lấy về dữ liệu DataTable formView Sotraichu
                    DataTable dt = Code.StaticVariable._tbl;
                    ShowDataNCN(dt);
                    Code.StaticVariable._tbl.Clear();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, Code.StaticVariable.messeseboxLuuY);
                }
            }
        }

        //Sự kiện chỉ cho phép nhập số vào TextBox số lượng
        private void txt_sl_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        private void txt_sl_Leave(object sender, EventArgs e)
        {
            if(txt_sl.Text.Length != 0)
                txt_sl.Text = _cl.NumberFormat(txt_sl.Text);
            else
                MessageBox.Show(Code.StaticVariable.messeseboxKoDcBoTrong, Code.StaticVariable.messeseboxLuuY);
        }

        private void txt_fee_Leave(object sender, EventArgs e)
        {
            if(txt_fee.Text.Length != 0)
                txt_fee.Text = _cl.NumberFormat(txt_fee.Text);
            else
                MessageBox.Show(Code.StaticVariable.messeseboxKoDcBoTrong, Code.StaticVariable.messeseboxLuuY);
        }

        private string GetNguoiChiuFee()
        {
            if (rdB_cn.Checked == true)
                return "CN";
            if (rdB_ncn.Checked == true)
                return "NCN";
            return "";
        }

        private void SetNguoiChiuFee(string nguoichiufee)
        {
            if (nguoichiufee == "CN")
                rdB_cn.Checked = true;
            if (nguoichiufee == "NCN")
                rdB_ncn.Checked = true;
        }
    }
}
